package org.footballmanager.pandafootball.system.service;

import org.footballmanager.pandafootball.system.domain.FootPerson;
import org.footballmanager.pandafootball.system.domain.FootTeam;
import org.footballmanager.pandafootball.system.domain.FootUser;
import org.footballmanager.pandafootball.system.domain.FootUserPerson;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

public interface FootUserPersonService extends BaseService<FootUserPerson> {
	/**
	 * 下放指定用户的指定球员
	 * @param userId
	 * @param qdId
	 * @param xycs 续约次数
	 */
	void deletePersonFromMyTeam(Long userId, Long qdId, Integer xycs, HttpServletRequest request);
	
	/**
	 * 下放指定用户的所有球员
	 * @param userId
	 */
	void deleteAllPerson(Long userId, HttpServletRequest request);

	/**
	 * 随机分配11个75分以下的球员
	 * @param userId
	 */
	void randomLow75(Long userId, HttpServletRequest request);
	
	/**
	 * 续约球员
	 * @param userId
	 * @param qyId
	 * @param num
	 */
	String renew(Long userId, Long qyId, Integer num, HttpServletRequest request);

	/**
	 * 根据用户主键查找该用户的所有信息
	 * @param qd1
	 * @return
	 */
	List<FootUserPerson> findPersonByUserId(Long qd1);

	/**
	 *  根据用户主键查找该用户的所有球员
	 * @param qd1
	 * @return
	 */
	List<FootPerson> findFootPersonByUserId(Long qd1, HttpServletRequest request);

	/**
	 * 自动减球员场次，如果为0自动解约
	 * @param userId
	 */
	void autoDeletePerson(Long userId, HttpServletRequest request);

	/**
	 * 增加次数，为删除报分使用
	 * @param userId
	 */
	void addUseTimes(Long userId, HttpServletRequest request);
	
	/**
	 * 保存球员到数据库中
	 * @param userId
	 * @param footPerson
	 */
	void saveUserPerson(Long userId, FootPerson footPerson, HttpServletRequest request);

	/**
	 * 获取可以挂牌的所有球员
	 * @param userId
	 * @return
	 */
	List<FootPerson> findCanGpPerson(Long userId);

	/**
	 * 根据用户主键和球员主键找信息
	 * @param userId
	 * @param qdId
	 * @return
	 */
	List<FootUserPerson> findFootPersonsByUserIdandQyId(Long userId, Long qdId);

	/**
	 * 查看主力人员人数
	 * @param user
	 * @return
	 */
	int checkMainPerson(FootUser user);

	/**
	 * 根据用户主键获取该用户的主力战斗值
	 * @param userId
	 * @return
	 */
	double getPower(Long userId, HttpServletRequest request);

	/**
	 * 合成球员，增加战力
	 * @param fup1
	 * @param fup2
	 * @return
	 */
	String compose(Long fup1, Long fup2, HttpServletRequest request);
	
	/**
	 * 根据球员id和续约次数查找对应球员
	 * @param qyId
	 * @param xycs
	 * @return
	 */
	FootUserPerson findPersonByQyidandXycs(Long userId, Long qyId, Integer xycs);

	/**
	 * 天梯赛 获取符合条件的战队并随机取一个
	 * @param user
     * @return
	 */
	FootTeam getRandomTeam(FootUser user);
	
	/**
	 * 根据球员信息查找是否有对应已经设为主力的队员
	 * @param userId
	 * @param fup
	 * @return
	 */
	boolean findPersonMain(Long userId, FootUserPerson fup);

}
